//
// Created by PC on 2023/9/1.
// 二进制数相加
// https://leetcode.cn/problems/add-binary/submissions/
// 1 <= a.length, b.length <= 10^4
// 不通过 原因: 将二进制字符串转为整数, 但是最长的串有1w位, 溢出了


#include <iostream>
#include <string>
#include <cmath>

using namespace std;

string addBinary(string a, string b)
{
    if (a=="0" && b=="0")
        return "0";
    string ans;
    int aa=0,bb=0;
    // 转成10进制数 存入aa,bb
    for (int i = a.size()-1; i >= 0; --i)
    {
        if(a[i]=='1')
        {
            aa+=int(pow(2,a.size()-i-1));
        }
    }
    for (int i = b.size()-1; i >= 0; --i)
    {
        if(b[i]=='1')
        {
            bb+=int(pow(2,b.size()-i-1));
        }
    }
//    cout<<aa<<endl;
//    cout<<bb<<endl;
    int c=aa+bb;
    while(c)
    {
        ans=to_string(c%2)+ans;
        c/=2;
    }
    return ans;
}

int main()
{
    string a = "1111001", b = "1001001";
//    a="11",b="1";
//    a="0",b="0";
    cout<<addBinary(a,b);
    return 0;
}